1-4 ニューラルネットワークの学習『ゼロから作るDeep Learning』
from 『ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装』
4.1
データからパラメータの値をきめることについての章
ニューラルネットワークはデータからパラメータの学習可能なのがすばらしい
手作業だとめっちゃ大変なので
コンピュータビジョンでは特徴量を使って画像データをベクトルに変換し、識別器で学習させる
ニューラルネットワークは変換せず、そのまま学習する
このことから end-to-end machine learning とも呼ばれる
word: 特徴量
入力データから本質的なデータを的確に抽出できるように設計された変換器
word: コンピュータビジョン
コンピュータビジョン | IoT用語辞典 | キーエンス
像情報をコンピュータに取り入れて処理し、必要な画像情報を取り出す技術です。 例えば、ロボットの目にあたる装置(ロボットビジョン)を作る研究分野では、実存する情報をコンピュータが取得するすべての過程を指します。
word: 汎化能力
まだ見ぬデータ(訓練データに含まれないデータ)に対しての能力
word: 過学習
あるデータセットにはうまく対応できても、他のデータセットには対応できない
あるデータセットだけに過度に対応した状態
4.2
word: 損失関数
ニューラルネットワークの性能の“悪さ”を示す指標
深層学習の仕組み, 勾配降下 | Chapter 2 Deep Learningで出てくるコスト関数は損失関数?
コスト関数は損失関数ですか?
word: 2乗和誤差
$ E = \frac{1}{2} \sum_{k} (y_k - t_k)^2
$ y_kはニューラルネットワークの出力、$ t_k教師データ、kはデータの次元数
教師データの各要素の差の2乗を計算し、その総和を求める
code:hoge.py
def sum_squared_error(y,t):
return0.5*np.sum((y-t)**2)
t =0,0,1,0,0,0,0,0,0,0 //2(t2)が正解
y =0.1,0.05,0.6,0.0,0.0,0.0,0.0,0.0,0.0,0.0 //てきとう
sum_squared_error(np.array(y),np.array(t))
上記の例では正解である、y[2]が最大なので計算するとわりと数値が小さくなるはず
数値が小さいほどモデルの悪さが低い
word: one-hot表現
正解ラベルを1とし、それ以外は0であらわす表記法
word: 交差エントロピー誤差
$ E = -\sum_{k} t_k \, log \, y_k
logは底が$ eの自然対数$ \log{_e}を表す
自然対数ってなに?cak.icon
完全に理解、自然対数のページを参照
$ y_kはニューラルネットワークの出力
$ t_kはone-hot表現で正解ラベルとなるインデックスのみが1、その他は0
なので、正解のみしか計算されない
例として、正解の出力が0.6だった場合、$ -\log0.6=0.51になる
word: ミニバッチ学習
損失関数は訓練データ1つに対してひとつ求められる
n個の訓練データがある場合すべての和を求めnで割ることによって平均の損失関数を求められる
訓練データが大量にある場合、すべての損失関数を計算するのはコストがかかりすぎる
一部を選び、そのデータを全体の近似として利用する
小さな塊(ミニバッチ)を抜き出して学習を行うので、ミニバッチ学習と呼ばれる
4.3
word: 数値微分
微小な差分によって微分を求めること
$ \frac{df(x)}{dx} = \lim_{h \to 0} \frac{f(x + h) - f(x)}{h}
xに対する$ f(x)の変化の度合いを表す
xの小さな変化により、関数$ f(x)の値がどれだけ変化するかを意味する
小さな変化であるhを限りなく0に近づける、ということを$ \lim_{h \to 0}で表す
word: 解析的な微分
数式の展開によって微分を求めること
word: 偏微分
複数の変数からなる関数の微分
$ f(x_0,x_1)=x^2_0+x^2_1
code:hoge.py
def function_2(x):
return x0**2 + x1**2
$ x^2_0ってなんだ?って思ったけど$ x_0の2乗なだけだったcak.icon
これはグラフに描画すると3次元のグラフになる
変数が$ x_0,x_1の2こあるから
2個ある変数のどっちに対する微分か?を表す必要がある
数式では$ \frac{\partial f}{\partial x_0}のように書く(これは$ x_0に対するもの)
4.4
word: 勾配法
hr.icon
目次
4章 ニューラルネットワークの学習
4.1 データから学習する
4.1.1 データ駆動
4.1.2 訓練データとテストデータ
4.2 損失関数
4.2.1 2乗和誤差
4.2.2 交差エントロピー誤差
4.2.3 ミニバッチ学習
4.2.4 [バッチ対応版]交差エントロピー誤差の実装
4.2.5 なぜ損失関数を設定するのか?
4.3 数値微分
4.3.1 微分
4.3.2 数値微分の例
4.3.3 偏微分
4.4 勾配
4.4.1 勾配法
4.4.2 ニューラルネットワークに対する勾配
4.5 学習アルゴリズムの実装
4.5.1 2層ニューラルネットワークのクラス
4.5.2 ミニバッチ学習の実装
4.5.3 テストデータで評価
4.6 まとめ
sync.icon#2024-05-06 13:50